package randlearn

import (
	"fmt"
	"math/rand"
	"reflect"
	"time"
)

// 初始化和种子设置
// 我们使用当前时间的纳秒作为种子，这保证了每次程序运行时种子的唯一性，从而生成不同的随机数序列
func initRandomSeed() {
	seed := time.Now().UnixNano()
	rand.Seed(seed)
}

// 生成随机数
func S1() {

	// 正常的非负整数随机
	num := rand.Int()
	fmt.Println(num)

	//限定数列的范围
	num1 := rand.Intn(100)
	fmt.Println(num1)

	//生成随机数
	num2 := rand.Float64()
	fmt.Println(num2)

	// 使用 Perm 生成生成一个从0到n-1的随机的切片
	num3 := rand.Perm(10)
	fmt.Println(num3, reflect.TypeOf(num3))
}

// 生成标准正态分布的随机数
func S2() {
	// 创建一个正态分布的随机数
	num1 := rand.NormFloat64()
	fmt.Println(num1)

	// 使用这种正态分布 形成一个 均值为10， 标准差为2的随机数
	var v1 float64 = 10
	var v2 float64 = 2
	result := v1 + v2*rand.NormFloat64()
	fmt.Println(result)
}
